%{
#include<stdio.h>
# include"y.tab.h"

  int hash_tab[101];
  int hash(char *c){
    int n;
    for (n=0; *c != '\0'; n++, c++) n+= 8 * (*c);
    return n%101;
  }
    
    
  
%}

//definit le type de yylval
%union{
  int i;
  char *s;
 }
%token <s> ID
%token <i>  N
%type <i> E
%type <i> F
%type <i> T
%%
S
: I S
| I
;
I
: ID '=' E ';'   { hash_tab[hash($1)] = $3;}
;
E
: T '+' E        { $$ = $1 + $3;}
| T '-' E        { $$ = $1 - $3;}
| T              { $$ = $1;}
;
T                
: F '*' T        { $$ = $1 * $3;}
| F              { $$ = $1;}
;
F
: N              { $$ = $1;}
| ID             { $$ = hash_tab[hash($1)];  printf("%s a la valeur : %d\n",$1,hash_tab[hash($1)]); }
| '(' E ')'      { $$ = $2;}
;
%%
int main (int argc , char *argv []){
yyparse();
return 0;
}
